package com.ca.ridersclubapplication.util;

import android.annotation.SuppressLint;

import com.ca.ridersclubapplication.data.bean.ClubInfo;
import com.ca.ridersclubapplication.data.bean.MessageInfo;
import com.ca.ridersclubapplication.data.bean.MiniComment;
import com.ca.ridersclubapplication.data.bean.MiniClubInfo;
import com.ca.ridersclubapplication.data.bean.PaperInfo;

import java.util.ArrayList;
import java.util.List;

public class TestUtils {

    public static final String[] headerUrl = new String[] {
            "https://i0.hdslb.com/bfs/face/6f917b1bde6ba8dd095fa91aab8b478afdb6f6b3.jpg@240w_240h_1c_1s.webp",
            "https://pic1.zhimg.com/v2-6ef213ea148af7a5c3101ecf4363f561_xl.jpg?source=32738c0c",
            "https://i2.hdslb.com/bfs/face/e097d264fee1962f580c21886651e0e9a375d5f8.jpg@96w_96h_1c.webp",
            "https://i1.hdslb.com/bfs/face/897434903587db636deaaf94d18ddb499efd71b2.jpg@96w_96h_1c.webp",
            "https://i1.hdslb.com/bfs/face/2c6f44b736fede9fe806f834cadaf9cce4969e08.jpg@96w_96h_1c.webp"
    };

    public static final String[] bannerUrl = new String[] {
            "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpicnew11.photophoto.cn%2F20161201%2Fqicheguanggaotupian16tupian-25685813_1.jpg&refer=http%3A%2F%2Fpicnew11.photophoto.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1670343067&t=7430ed679c2c246220f4326190a8e324",
            "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Ffile06.16sucai.com%2F2016%2F0116%2F8c4d36e10fd1b3b3dee4eac53682541f.jpg&refer=http%3A%2F%2Ffile06.16sucai.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1670343122&t=b729546a1ab4fda7a20899412db984bc",
            "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpicnew8.photophoto.cn%2F20140901%2Fchangchenghafoqichehaibao-01274022_1.jpg&refer=http%3A%2F%2Fpicnew8.photophoto.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1670344339&t=2f8c273898a23c7589c5c48582f1f109"
    };

    public static final String[] name = new String[] {
            "MEIYOUya",
            "Lyh",
            "Redmi K40",
            "吉利帝豪"
    };

    public static final String[] commentContent = new String[] {
            "不推荐购买任何888,7g1,8g1的机型",
            "辛苦你了钠盐，奖励你一枚三连碎片，再更新一期视频可获得5枚三连碎片，连更两期可奖励20枚，集齐100枚碎片可以兑换一份三连哦！！！",
            "奉劝各位存钱，年底多少地区修路我就不多说了，手里有过河钱，心里就不慌，手机只是工具，不是攀比的工具，不要被洗脑。",
            "三千园以内直接k50至尊，要屏幕直接k50不用犹豫",
            "可惜米6还不卡",
            "我给我爸买的k50至尊，我体验了一下，感觉拍照有点糊，玩原神开极限画质60帧没感觉卡，发热还行玩了小俩小时我感觉是温的，不烫，而且120w充电确实快。",
            "K50至尊版12+512，已经用了三天了，和我的老米8一比，丝滑流畅，续航充电双双起飞默认的拍照模式拍出来照片（3MB）还没我的米8拍出来（5MB）大，不过夜景亮多了，这点就够了",
            "华为荣耀有什么推荐的吗？不超过3000多，长辈喜欢这个品牌",
            "3000上下，求推荐，很少玩游戏，偶尔拍照片，工作刷视频看小说听歌重度使用，续航别拉夸，质感别拉夸（意思就是别太差就好），系统省心好用（不会折腾手机）。本来看好了iqoo10，又看到了视频说什么触屏采样率，又不知道换什么了，50至尊？那个系统不是不省心？",
            "终于有老年机不只推荐低端机的了，我一直觉得给老人更应该买好的，儿女不一定能一直在身边，旗舰机性能，做工用料，信号都会比低端机好，不会轻易变卡，也更符合老人喜欢耐用的想法，只要不告诉他们真实售价，给自己爸妈还是买旗舰款好，他们不玩大游戏，也不存在火龙的问题，我给爸妈买的都是旗舰款，他们不是不喜欢贵的，也不是不在乎卡顿，只是更节约更会忍耐而已",
            "魅族痛哭",
            "准备换一个小屏手机，预算3k一下。看了半天好像只有小米12x",
            "快出四大旗舰系列。",
            "其实根据我对身边人的了解，大部分工薪阶层的需求是一千块出头，并不需要太出色的处理器，别太差就可以，重要的一是续航二是拍照，所以我很推荐iQOO z5或者iQOOz6都是很不错的机器",
            "不推荐任何小米的手机，因为就算把系统更新这些所有功能都关闭、都屏蔽，还是会给强制升级，小米的手机，是买断不了的，还是可以随意后台操作，后台云控的！",
            "请各位辩手按顺序入场，其他人等文明看戏。",
            "某宝双11紫色官网14pm直接抢断货"
    };

    public static final String[] title = new String[] {
            "“双11购物节”全价位段换机下单指南",
            "Redmi Note 12 系列测评体验",
            "苹果iPad Pro M2芯片+悬浮Apple Pencil+达芬奇 专业应用进化",
            "苹果 iPad10 四大配件开箱",
            "是挤牙膏还是真性价比？",
            "六款 iPad 2022年购买分析",
            "十款第三方65W多口氮化镓充电器选购指南",
            "Redmi Note 12 系列测评体验",
            "首发！小米12S Ultra详细对比测评",
            "华为Mate50 Pro详细测评",
            "小米平板5 Pro及全套配件开箱体验",
            "手机续航谁最强？",
            "天玑8100 新神U来了！",
            "iPhone14该裸奔吗",
            "维修iPhone14多钱？",
            "华为Mate50壳大降价",
            "苹果iPad10大改动",
            "科技美学都在用什么手机？",
            "在科技美学工作5年是什么体验？"
    };

    public static final String[] paperContent = new String[] {
            "一直以来，提到性价比游戏本，大家往往会想到什么？公模黑塑料机身？为了追求性能配置舍弃屏幕素质？又或者是表面看上去不错的配置然而性能释放拉胯？性价比一直以来都是游戏本厂商们追求的一个目标，但是事实上在实际的产品体验方面，性能只是带给用户优秀体验的一部分，一个真正优秀的游戏本应该是能做到在性能优秀、性价比较高的情况下，带给用户全方面的优秀体验的。那么说到这里就不得不提到拯救者的R9000P系列了，我们曾经也多次体验过R9000P系列的前几代，其在性价比等方面都给我们带来了不错的体验。",
            "作为游戏本，大家最看重的当然是它的游戏性能，现在不少人都知道选笔记本先看配置，但是忽视了性能释放的问题。毕竟就算是同款硬件，因为性能释放不同其实际性能表现也会有所不同，就好像世界上有这么多叫姚明的，有多少能去打NBA呢？",
            "所以说游戏本性能释放是一个很值得去研究的问题，我们手上这台R9000P是锐龙7 6800H+RTX 3070Ti的版本，官方给出的数据是双烤能达到45+140W，接下来我们就来烤一烤看看它能不能达到官方宣称的水平。",
            "对于笔记本来说，屏幕就是它“心灵的窗户”，毕竟只有通过屏幕我们才能够看懂电信号中的那些0和1。不过有些人也会觉得游戏本要什么好屏幕，性能强、性价比高就行。但事实上屏幕的素质也包含在性价比的“性能”里。想象一下，当你工作或者学习一天之后拖着劳累的身体回到家里，想打个游戏或者看看电影放松一下，结果屏幕分辨率差刷新率低，还灰蒙蒙一片，体验极差。累了一天回家还要折磨自己的眼睛，岂不是很难受？",
            "首先在基础参数方面，R9000P 2022款拥有2560x1600也就是2k分辨率的屏幕，配合165Hz的高刷新率以及5ms的响应时间，在画面精细程度以及流畅度上都有着不错的表现，当然你还可以在Legion Zone中开启Over Drive，将屏幕响应时间进一步提升到3ms。",
            "你可以在这里非常方便地切换独显直连或者是混合模式，切换之后只需要重启，避免了像不少游戏本只能通过进入BIOS来切换，要是中文BIOS或者是发烧友还好，需要的功能在哪里一看就知道。但是如果是小白又恰好遇上了英文BIOS，那可真是哑巴扎针——难受说不出了。"
    };

    public static String randHeaderUrl() {
        int index = (int) (Math.random() * headerUrl.length);
        return headerUrl[index];
    }

    public static String randBannerUrl() {
        int index = (int) (Math.random() * bannerUrl.length);
        return bannerUrl[index];
    }

    public static String randName() {
        int index = (int) (Math.random() * name.length);
        return name[index];
    }

    public static List<MiniClubInfo> randomMiniInfoList() {
        int size = (int) (Math.random() * 5);
        return randomMiniInfoList(size);
    }

    public static List<MiniClubInfo> randomMiniInfoList(int size) {
        List<MiniClubInfo> list = new ArrayList<>();
        for (int i = 0; i < size; i++) {
            list.add(new MiniClubInfo(0L, randHeaderUrl(), randName()));
        }
        return list;
    }

    public static List<ClubInfo> randomClubInfoList() {
        int size = (int) (Math.random() * 5);
        return randomClubInfoList(size);
    }


    public static List<ClubInfo> randomClubInfoList(int size) {
        List<ClubInfo> list = new ArrayList<>();
        for (int i = 0; i < size; i++) {
            list.add(new ClubInfo(0L, randHeaderUrl(), randName(), (int) (Math.random() * 1000000)));
        }
        return list;
    }

    public static String randomTime() {
        int month = (int) (Math.random() * 12) + 1;
        int day = (int) (Math.random() * 31) + 1;
        @SuppressLint("DefaultLocale")
        String time = String.format("%02d-%02d", month, day);
        return time;
    }

    public static String randomCommentContent() {
        int index = (int) (Math.random() * commentContent.length);
        return commentContent[index];
    }

    public static String randomTitle() {
        int index = (int) (Math.random() * title.length);
        return title[index];
    }

    public static String randomPaperContent() {
        int index = (int) (Math.random() * paperContent.length);
        return paperContent[index];
    }

    public static MiniComment randomMiniComment() {
        return new MiniComment((long) (Math.random() * 999999), randName(), randomCommentContent());
    }

    public static String[] randomImageUrlArray() {
        int size = (int) (Math.random() * 10);
        String[] array = new String[size];
        for (int i = 0; i < array.length; i++) {
            array[i] = randHeaderUrl();
        }
        return array;
    }

    public static List<PaperInfo> randomPaperList() {
        int size = (int) (Math.random() * 50);
        return randomPaperList(size);
    }

    public static List<PaperInfo> randomPaperList(int size) {

        List<PaperInfo> list = new ArrayList<>();

        for (int i = 0; i < size; i++) {

            list.add(new PaperInfo(
                    0L,
                    0L,
                    0L,
                    randHeaderUrl(),
                    randName(),
                    randomTime(),
                    randName(),
                    randomTitle(),
                    randomImageUrlArray(),
                    randomPaperContent(),
                    randomMiniComment(),
                    (long) (Math.random() * 999999),
                    (long) (Math.random() * 999999)));
        }

        return list;
    }

    public static List<MessageInfo> randomMessageInfoList(int size) {
        List<MessageInfo> list = new ArrayList<>(size);
        for (int i = 0; i < size; i++) {
            int unReadCount = (int) (Math.random() * 100);
            list.add(new MessageInfo(0L, randHeaderUrl(), randName(), randomTime(), randomCommentContent(), unReadCount));
        }
        return list;
    }
}
